package ComoViajo;



public class EstacionSubte extends Estacion implements EstacionInterface{
	private static final int TIEMPO_POR_ESTACION = 2;	
	private static final float COSTO_BOLETO_SUBTE = (float)1.10;
	
	// Buenas practicas, primero los atributos, luego constructor, luego los metodos
	// algunos m�s detallistas como Nico / Leo les van a pedir separar los getters, yo no rompo tanto :d)
	public EstacionSubte(String nombre, String linea) { super(nombre,linea); }

	

	public EstacionSubte(String nombre, String linea, Direccion direccion) {
		super(nombre, linea,direccion);
	}

	public int getTiempoTransbordo(EstacionTren estacionTren) {
		return TIEMPO_COMBINACION_SUBTE_TREN;
	}

	public int getTiempoTransbordo(EstacionSubte estacionSubte) {
		
		return TIEMPO_COMBINACION_SUBTE_SUBTE;
	}
	
	public int getTiempoDesdeEstacion(Estacion estacionAnterior)  {
		int tiempo=TIEMPO_POR_ESTACION;
		
		if((estacionAnterior == null)||(this.estaEnLaMismaLineaQue(estacionAnterior))) {
			return tiempo;
		}
		
		tiempo+=estacionAnterior.getTiempoTransbordo(this);
		
		return tiempo;
	}


	/**
	 * si hace una combinacion entre subtes devuelve 0 por 
	 * que no es necesario volver a sacar un pasaje
	 */
	public float getCosto(EstacionInterface estacionSiguiente, int estacionesVisitadas) {
		// no se puede escapar del uso del instanceof, el double dispatch "no funciona"
		if((!this.estaEnLaMismaLineaQue(estacionSiguiente))&&(estacionSiguiente instanceof EstacionSubte)){
			return 0;
		}
		return COSTO_BOLETO_SUBTE;
	}

		
	public int getTiempoDesdeEstacion(EstacionInterface estacionAnterior) {
		return this.getTiempoDesdeEstacion((Estacion) estacionAnterior);
	}

}



